<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    // 将一个对象编程可迭代对象
    // 1.必须实现一个特定的函数 [Symbol.iterator],
    // 2.这个函数必须返回一个迭代器(这个迭代器用于迭代当前的对象 中的内容)

    // 1.1这个是迭代infos中的firends属性
    // let infos = {
    //   firends: ['yaoming', 'kobe', 'wang'],
    //   [Symbol.iterator]() {
    //     let index = 0
    //     let iterator = {
    //       // 这个this指向上层作用域(找作用域就找函数)
    //       next: () => {
    //         if (index < this.firends.length) {
    //           return { done: false, value: this.firends[index++] }
    //         } else {
    //           return { done: true }
    //         }
    //       }
    //     }
    //     return iterator
    //   }
    // }

    // let iterator = infos[Symbol.iterator]()
    // console.log(iterator.next());
    // console.log(iterator.next());
    // console.log(iterator.next());
    // console.log(iterator.next());

    // 可迭代对象可以进行for of 操作
    // for (const a of infos) {
    //   console.log(a);
    // }

    // 1.2现在我要迭代infos中的 键值对  
    // let infos = {
    //   firends: ['yaoming', 'kobe', 'wang'],
    //   name: "123",
    //   age: 18,
    //   [Symbol.iterator]() {
    //     // let keys = Object.keys(this)
    //     let values = Object.values(this)
    //     let index = 0
    //     let iterator = {
    //       // 这个this指向上层作用域(找作用域就找函数)
    //       next: () => {
    //         if (index < values.length) {
    //           return { done: false, value: values[index++] }
    //         } else {
    //           return { done: true }
    //         }
    //       }
    //     }
    //     return iterator
    //   }
    // }

    // let iterator = infos[Symbol.iterator]()
    // console.log(iterator.next());
    // console.log(iterator.next());
    // console.log(iterator.next());
    // console.log(iterator.next());


    // 拿一下数组的迭代器对象玩一下
    let arr = [1, 2, 3]
    console.log(arr[Symbol.iterator]());


  </script>

</body>

</html>